/** 纯数字 */
export const REG_NUMBER = /^[0-9]+$/

/** 纯小写字母 */
export const REG_LETTER_SMALL = /^[a-z]+$/

/** 纯大写字母 */
export const REG_LETTER_BIG = /^[A-Z]+$/

/** 字母/下划线开头长度6-18位的密码 */
export const REG_PASSWORD = /^[a-z_A-Z]\w{5, 17}$/

/** 身份证号 */
export const REG_ID = /^\d{15}|\d{18}$/

/** 一个或者多个汉字 */
export const REG_CHINESE = /^[\u4e00-\u9fa5]+$/

/** 双字节字符 */
export const REG_DOUBLE_CHAR = /^[\x00-\xff]$/

/** 首位固定数字1,后接5-10个数字 */
export const REG_NUMBER_6_11 = /^1[0-9]{5,10}$/

/** 银行卡号 */
export const REG_BANK_NUMBER = /^[1-9]([0-9]{9,18})$/

/** QQ号 */
export const REG_QQ = /^[1-9]([0-9]{4,10})$/

/** 微信 */
export const REG_WECHAT = /^[a-zA-Z]{1}[-_a-zA-Z0-9]{5,19}$/

/** 外链资源头 */
export const REG_PROTOCOL = /^((http|https|ftp|rtsp|mms)?:\/\/)/

/** 手机号码 */
export const REG_MOBILE = /^1[3-9]\d{9}$/

/** 邮箱 */
export const REG_MAILBOX = /^[A-Za-z0-9-._]+@[A-Za-z0-9-]+(.[A-Za-z0-9]+)*(.[A-Za-z]{2,6})$/

/** 手机端 */
export const REG_IS_MOBILE = /(Android|webOS|iPhone|iPod|BlackBerry|ios|Windows Phone|Phone|IOS)/i

/** 手机端-IOS */
export const REG_IS_IOS = /iPad|iPhone|iPod/i

/** 手机端-Android */
export const REG_IS_ANDROID = /Android/i

/** 带有小数点数字 */
export const REG_NUMBER_POIT = /^([+-]?)?\d+(\.\d*)?$/

/** 数字千分位 */
export const REG_FORMAT_DIGIT = /(\d)(?=(\d{3})+(?!\d))/g

/** 数字千分位反替换 */
export const REG_NO_FORMAT_DIGIT = /\$\s?|([,|W]*)/g

/** 国际手机号码正则表达式 */
export const REG_COM_MOBILE = /^((00){1}[1-9]{1}[0-9]{1,3}|86|\+86)?1[3458]\d{9}$/

/** base64 资源 */
export const REG_BASE64 = /^data:image\/png;base64/

/** 电话验证 区号(0开头)-号码 */
export const REG_PHONE = /^0\d{2,3}-?\d{7,8}$/

/** html 标签 */
export const REG_HTML = /<(.*)>(.*)<\/(.*)>|<(.*)\/>/

/** 字符串首尾空格 */
export const REG_SE_SPACE = /(^\s*)|(\s*$)/

/**
 * 模糊搜索正则
 * @param _str 要搜索的字符
 * @returns {RegExp}
 */
export const fuzzySearch = (_str = '') => {
    const pattern = _str.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&')
    return new RegExp(pattern, 'gi')
}

/** 是否是ios机型 */
export const isIOS = () => REG_IS_IOS.test(navigator.userAgent) && !(window as any).MSStream

/** 是否是Android机型 */
export const isAndroid = () => REG_IS_ANDROID.test(navigator.userAgent)

/** 是否是移动端 */
export const isMobile = () => REG_IS_MOBILE.test(navigator.userAgent)

/**
 * 数字千分位处理
 * @param {string|number} _m 需要处理的数字
 * @returns {string}
 */
export const kiloDigit = (_m: number | string) => {
    if (Number(_m) >= 1000) {
        return `${_m}`.replace(REG_FORMAT_DIGIT, '$1,')
    }
    return `${_m}`
}
